package com.itheima.d02_api_arrays;

import java.util.Arrays;
import java.util.function.IntUnaryOperator;

/**
 * 目标：了解Arrays工具类常用功能方法
 */
public class Test {

    public static void main(String[] args) {
        //创建一个整型数组
        int [] ages = {22, 19, 18, 21, 17};

        //方法1：toString方法，打印数组内容
        System.out.println(ages);
        System.out.println("数组数据："+Arrays.toString(ages));

        //方法2：copyOfRange，拷贝数组
        int[] newAges = Arrays.copyOfRange(ages, 1, 4); //包含前面位置的数据，不包含后面位置的数据
        System.out.println("新数组数据："+Arrays.toString(newAges));

        //方法3：copyOf，拷贝数组，数组扩容（ArrayList底层使用此方法进行集合扩容）
        int[] newMaxAges = Arrays.copyOf(ages, 10);
        System.out.println("数组扩容数据："+Arrays.toString(newMaxAges));

        //方法4：setAll，批量修改
        Arrays.setAll(ages, new IntUnaryOperator() {
            //此方法，执行多次，每次获取数组的索引位置，处理对应位置的数据，返回处理后的结果
            @Override
            public int applyAsInt(int index) {
                return ages[index]+1;
            }
        });

        //lambda简化
        Arrays.setAll(ages,(int index)->{
                return ages[index]+1;
            }
        );

        //缺省规则简化lambda
        Arrays.setAll(ages,index->ages[index]+1);



        System.out.println("操作后数组中的数据："+Arrays.toString(ages));

        //方法5：sort，排序 ，默认升序
        Arrays.sort( ages );
        System.out.println("排序后数组中的数据："+Arrays.toString(ages));



    }
}
